﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Administrador_Lugares_ModificarLugar : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ButtonTipo_Click(object sender, EventArgs e)
    {
        //boton aplicar un tipo de busqueda para eliminar lugar

        if (DropDownListSegun.Text.Trim().CompareTo("Nombre") == 0)
        {//buscar segun nombre
            DropDownListLugares.DataTextField = "NOM_LUGAR";
            DropDownListLugares.Enabled = true;//habilitar
            DropDownListLugares.DataBind();
        }
        else
        {//buscar segun direccion
            DropDownListLugares.DataTextField = "DIRECCION_LUGAR";
            DropDownListLugares.Enabled = true;//habilitar
            DropDownListLugares.DataBind();
        }

        //limpiar campos de datos
        TextBoxNombre.Text = "";
        TextBoxDireccion.Text = "Direccion";
        TextBoxComuna.Text = "";
        TextBoxCiudad.Text = "";
        TextBoxRegion.Text = "";
        DropDownListTipos.SelectedIndex = 0;//deja valor por defecto (Nacional)
        DropDownListTipos.DataBind();//actualizar

        //habilitar nueva busqueda
        ButtonVerDatos.Text = "Ver Datos";
        DropDownListLugares.Enabled = true;
    }
    protected void ButtonVerDatos_Click(object sender, EventArgs e)
    {
        if (ButtonVerDatos.Text.Trim().CompareTo("Ver datos") == 0)
        {//el boton debe mostrar los datos
            try
            {
                //autorellenar campos
                DataSetEscorpiusTour.LUGARDataTable ds = new DataSetEscorpiusTour.LUGARDataTable();
                LugarBLL lugarbll = new LugarBLL();

                //seleccionar campos
                ds = lugarbll.mostrarLugaresById(int.Parse(DropDownListLugares.SelectedValue));
                //rellenar formulario (mostrar datos)
                TextBoxNombre.Text = ds.Rows[0][1].ToString();
                TextBoxDireccion.Text = ds.Rows[0][2].ToString();
                TextBoxComuna.Text = ds.Rows[0][3].ToString();
                TextBoxCiudad.Text = ds.Rows[0][4].ToString();
                TextBoxRegion.Text = ds.Rows[0][5].ToString();
                string tipo_tmp = ds.Rows[0][6].ToString().Trim();
                if (tipo_tmp.CompareTo("Nacional") == 0)
                {//si el tipo de lugar es nacional
                    DropDownListTipos.SelectedIndex = 0;
                }
                else
                {//si el tipo de lugar es extranjero
                    DropDownListTipos.SelectedIndex = 1;
                }

                //el boton impide que se cambie el rut
                DropDownListLugares.Enabled = false;
                DropDownListTipos.DataBind();//actualizar

                //el boton cambia de nombre
                ButtonVerDatos.Text = "Limpiar";

                //esconder mensajes
                LabelMensaje.Visible = false;

            }
            catch (Exception ex)
            {
                LabelMensaje.Text = "Error al autorrellenar campos.";
                LabelMensaje.Visible = true;
            }
        }
        else
        {//el boton no es ver datos, entonces es "Ver otros"
            //el boton desbloquea el droplist de operadores
            DropDownListLugares.Enabled = true;

            //el boton borra los datos actuales
            TextBoxNombre.Text = "";
            TextBoxDireccion.Text = "Direccion";
            TextBoxComuna.Text = "";
            TextBoxCiudad.Text = "";
            TextBoxRegion.Text = "";
            DropDownListTipos.SelectedIndex = 0;
            DropDownListTipos.DataBind();//actualizar

            //el boton cambia de nombre
            ButtonVerDatos.Text = "Ver datos";

            //esconder mensajes
            LabelMensaje.Visible = false;
        }
    }
    protected void ButtonModificar_Click(object sender, EventArgs e)
    {//modificando
        try
        {//probar si es posible modificar el lugar
            //validar los campos
            bool es_valido = true;

            //nombre (string, null)
            if (es_valido == true)
            {
                int tam = TextBoxNombre.Text.Length;
                if (tam > 100)
                {//tamaño sobrepasa el maximo permitido
                    LabelMensaje.Text = "Campo nombre sobrepasa el tamaño máximo permitido (100 caractéres).";
                    LabelMensaje.Visible = true;
                    es_valido = false;
                }
            }

            //direccion (string, not null)
            if (es_valido == true)
            {
                int tam = TextBoxDireccion.Text.Length;
                if (tam > 100)
                {//tamaño sobrepasa el maximo permitido
                    LabelMensaje.Text = "Campo dirección sobrepasa el tamaño máximo permitido (100 caractéres).";
                    LabelMensaje.Visible = true;
                    es_valido = false;
                }
            }

            //comuna (string, null)
            if (es_valido == true)
            {
                int tam = TextBoxComuna.Text.Length;
                if (tam > 100)
                {//tamaño sobrepasa el maximo permitido
                    LabelMensaje.Text = "Campo comuna sobrepasa el tamaño máximo permitido (100 caractéres).";
                    LabelMensaje.Visible = true;
                    es_valido = false;
                }
            }

            //ciudad (string, null)
            if (es_valido == true)
            {
                int tam = TextBoxCiudad.Text.Length;
                if (tam > 100)
                {//tamaño sobrepasa el maximo permitido
                    LabelMensaje.Text = "Campo ciudad sobrepasa el tamaño máximo permitido (100 caractéres).";
                    LabelMensaje.Visible = true;
                    es_valido = false;
                }
            }

            //region (string, null)
            if (es_valido == true)
            {
                int tam = TextBoxRegion.Text.Length;
                if (tam > 100)
                {//tamaño sobrepasa el maximo permitido
                    LabelMensaje.Text = "Campo región sobrepasa el tamaño máximo permitido (100 caractéres).";
                    LabelMensaje.Visible = true;
                    es_valido = false;
                }
            }

            //tipo (string, not null)
            //definido por la vista

            //modificar nuevo lugar al sistema///////////////////////
            if (es_valido == true)
            {//si las pruebas han tenido exito
                //capturar campos
                string nombre = TextBoxNombre.Text.Trim();
                string direccion = TextBoxDireccion.Text.Trim();
                string comuna = TextBoxComuna.Text.Trim();
                string ciudad = TextBoxCiudad.Text.Trim();
                string region = TextBoxRegion.Text.Trim();
                string tipo = DropDownListTipos.Text.Trim();
                
                //el id se captura del valor de retorno de la lista (valor no es campo de text mostrado)
                int id = int.Parse(DropDownListLugares.SelectedValue);//parsear para k sea valido
                //el valor id viene de la base de datos directamente, por lo tanto no necesita validacio

                //insertar en la base de datos
                LugarBLL lugarbll = new LugarBLL();
                int filas_afectadas = 
                    lugarbll.actualizarLugar(
                    nombre,       //dentro de la base de datos es posible ingresar valores nulos
                    direccion,    //ai k ver como hacer para k los valores nulos se muestren
                    comuna,       //de una forma especial y no como NULL ...
                    ciudad, 
                    region, 
                    tipo, 
                    id);
                if (filas_afectadas == 0)
                {//no hubieron filas afectadas por la operacion
                    LabelMensaje.Text = "Imposible modificar nuevo lugar.";
                    LabelMensaje.Visible = true;
                }
                else
                {//si la insercion fue realiza con existo
                    LabelMensaje.Text = "Lugar modificado exitósamente";
                    LabelMensaje.Visible = true;

                    //como los valores que se utilizan para la busqueda puden cambiar
                    //es encesario actualizar la lista de lugares
                    ButtonTipo_Click(sender, e);
                }
            }

        }
        catch (Exception)
        {//error al ingresar el nuevo lugar
            LabelMensaje.Text = "Error al modificar lugar.";
            LabelMensaje.Visible = true;
        }
    }
}
